package com.eight.controller.api;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.eight.pojo.SysLogininfor;
import com.eight.service.LoginLogService;
import com.eight.vo.ComResult;
import com.eight.vo.LoginLogVo;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * @Description: TODO
 * @Author: Van.Planifolia
 * @CreateTime: 2023-02-27  19:55
 * @Version: 1.0
 */
@RestController
public class LoginLogApi {
    @Resource(name = "loginLogService")
    private LoginLogService loginLogService;

    /**
     * 进行分页查询全部
     *
     * @param pageIndex 分页索引
     * @param pageSize  分页大小
     * @return 查询到的分页信息
     */
    @GetMapping("/log/list/{pageIndex}/{pageSize}")
    public ComResult list(@PathVariable Integer pageIndex, @PathVariable Integer pageSize) {
        Page<SysLogininfor> page = new Page<>(pageIndex, pageSize);
        page = loginLogService.page(page);
        return new ComResult(2000, "查询成功", page);
    }

    /**
     * 模糊分页查询
     *
     * @param sysLogininfor 查询条件
     * @param pageIndex     页面索引
     * @param pageSize      页面大小
     * @return 查询的结果
     */
    @PostMapping("/log/fuzzySearch/{pageIndex}/{pageSize}")
    public ComResult fuzzySearch(@RequestBody LoginLogVo sysLogininfor, @PathVariable(value = "pageIndex") Integer pageIndex, @PathVariable("pageSize") Integer pageSize) {
        return loginLogService.fuzzySearch(sysLogininfor, pageIndex, pageSize);
    }

    /**
     * 查询当前用户最近的登录信息
     *
     * @param username 用户的名字
     * @return 登录信息
     */
    @GetMapping("/log/getLast/{username}")
    public ComResult getLastLogin(@PathVariable String username) {
        // 按照条件查询 login_name,按照时间倒序，只显示一个
        return loginLogService.searchLastLog(username);
    }


    /**
     * 根据传入的id列表来进行删除操作
     *
     * @param ids 删除的id信息
     * @return 执行的结果
     */
    @PostMapping("/log/remove")
    public ComResult removeSelect(@RequestBody List<Integer> ids) {
        // 执行批量删除操作
        boolean b = loginLogService.removeBatchByIds(ids);
        // 看是否成功删掉，然后返回不同的信息
        return b ? new ComResult(2000, "执行成功") : new ComResult(5000, "执行失败！");
    }
}
